import java.io.*;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
 

// 工具类
public class FileUtil {
    public static final String zd = ",";  // 字段分隔
    public static final String hfg = "\r\n";  // 行分隔
 
    // 保存商品信息
    public static void saveBooks(Good good){   // 创建saveBooks方法
        // 判断本地是否存在此文件
 
        Date date = new Date();    // 创建Date日期类对象
        // 定义日期格式
        DateFormat format = new SimpleDateFormat("yyyyMMdd"); // y:年 , M:月, d:日
        // 拼接文件名
        String name = "进货记录" + format.format(date) + ".csv";  // format.format(date):设置对象格式以生成字符串
        InputStream in; // 定义字节输入流
        // 使用try...catch处理异常
        try{
            in = new FileInputStream(name); // 判断本地是否存在该文件
            if (in != null){
                in.close(); // 关闭输入流
                // 可获取输入流,则存在文件,采取修改文件方式
                createFile(name,true,good);
            }
        }catch (FileNotFoundException e){
            // 输入流获取失败,则不存在文件,采取新建新文件方式
            createFile(name,false,good);
        }catch (IOException e){
            e.printStackTrace();
        }
    }
 
    public static void createFile(String name,boolean label,Good good){ // name :文件名,label:表示文件是否存在,good:商品信息
        BufferedOutputStream out = null;  // 定义字节缓冲输出流对象
        // 构造一个字符串生成器
        StringBuilder sdf = new StringBuilder(); // 拼接内容
        try{
            if (label){  // 当已存在当天的文件,则在文件内容后追加
                // 创建输出流,用于追加文件
                out = new BufferedOutputStream(new FileOutputStream(name,true)); // 末尾定义为true,表示追加写入,不会重新写入
 
            }else{   // 不存在当天文件,则新建文件
                // 创建输出流,用于保存文件
                out = new BufferedOutputStream(new FileOutputStream(name));
                String[] fieldSort = new String[]{"商品编号","商品名称","购买数量","单价","总价","联系人"}; // 创建表头
                for (String fieldKey : fieldSort){  // 增强for遍历
                    // 新建时,将表头存入本地文件
                    sdf.append(fieldKey).append(zd);
                }
            }
            sdf.append(hfg); // 追加换行符号
            sdf.append(good.id).append(zd);
            sdf.append(good.name).append(zd);
            sdf.append(good.number).append(zd);
            sdf.append(good.price).append(zd);
            sdf.append(good.money).append(zd);
            sdf.append(good.people).append(zd);
            String str = sdf.toString();  // 将sdf转换为String类型
            byte[] b = str.getBytes();   // 创建字节数组
            for (int i = 0 ; i < b.length ; i++){   // 遍历数组
                out.write(b[i]); // 将内容写入本地文件
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            try{
                if (out != null){
                    out.close(); // 关闭输出流
                }
            }catch (Exception e){
                e.printStackTrace();
            }
        }
    }
}